package com.xinchao.job.mapper.dmp;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.xinchao.common.dto.DeviceSimInfoActivationTimeDTO;
import com.xinchao.common.dto.DeviceSimInfoTrafficDTO;

public interface DeviceSimInfoMapper {


	/**
	 * 批量更新终端上报信息
	 *
	 * @param map
	 */
	public void batchUpDeviceSimInfoReport(Map<String, Object> map);

	/**
	 * 获取终端sim卡信息总数
	 *
	 * @param city 城市
	 * @return Long
	 */
	Long countDeviceSimInfo(String city);

	/**
	 * 获取第一个终端sim卡信息流量（升序排列）
	 *
	 * @param city 城市
	 * @return DeviceSimInfoTrafficDTO
	 */
	DeviceSimInfoTrafficDTO selectFirstDeviceSimInfoTraffic(String city);

	/**
	 * 获取终端信息列表
	 *
	 * @param city    城市
	 * @return List<DeviceSimInfoTrafficDTO>
	 */
	List<DeviceSimInfoTrafficDTO> listDeviceSimInfoTraffic(@Param("city") String city);

	/**
	 * 获取没有激活时间的终端sim卡信息总数
	 *
	 * @param city 城市
	 * @return Long
	 */
	Long countDeviceSimInfoNoActivationTime(String city);

	/**
	 * 获取第一个终端sim卡信息激活时间（升序排列）
	 *
	 * @param city 城市
	 * @return DeviceSimInfoActivationTimeDTO
	 */
	DeviceSimInfoActivationTimeDTO selectFirstDeviceSimInfoActivationTime(String city);

	/**
	 * 获取终端信息激活时间列表
	 *
	 * @param city     城市
	 * @return List<DeviceSimInfoTrafficDTO>
	 */
	List<DeviceSimInfoActivationTimeDTO> listDeviceSimInfoActivationTime(@Param("city") String city);

	/**
	 * 更新终端sim卡信息激活时间
	 */
	void updateDeviceSimInfoActivationTime(DeviceSimInfoActivationTimeDTO dto);

	/**
	 * 更新终端sim卡信息激活时间
	 */
	void updateDeviceSimInfoActivationTimeBatch(@Param("dtoList") List<DeviceSimInfoActivationTimeDTO> dtoList);

	/**
	 * 更新终端sim卡信息当月流量
	 *
	 * @param dto DeviceSimInfoTrafficDTO
	 */
	void updateDeviceSimInfoMonthTraffic(DeviceSimInfoTrafficDTO dto);

	/**
	 * 批量更新终端sim卡信息当月流量
	 *
	 * @param dtoList List<DeviceSimInfoTrafficDTO>
	 */
	void updateDeviceSimInfoMonthTrafficBatch(@Param("dtoList") List<DeviceSimInfoTrafficDTO> dtoList);

	/**
	 * 更新终端sim卡信息历史总流量（移动只能获取6个月的数据）
	 *
	 * @param dto DeviceSimInfoTrafficDTO
	 */
	void updateDeviceSimInfoHistoryTraffic(DeviceSimInfoTrafficDTO dto);

	/**
	 * 批量更新终端sim卡信息历史总流量（移动只能获取6个月的数据）
	 *
	 * @param dtoList List<DeviceSimInfoTrafficDTO>
	 */
	void updateDeviceSimInfoHistoryTrafficBatch(@Param("dtoList")  List<DeviceSimInfoTrafficDTO> dtoList);
    /**
     * 批量设置sim附属信息
     */
	public int batchUpSimInfo();
	
	/**
	 * 清空重复的sim信息
	 */
	public List<String> getDuplicateRecord();
	
	/**
	 * 清空重复的sim信息
	 */
	public void resetDuplicateRecord(@Param("deviceCodes")List<String> deviceCodes);
}
